﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Threading;
using System.IO;
using Tizer.Utilities;

namespace Tizer.Web.Backoffice.Controls
{
    public partial class FileUpload : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }

        /// <summary>
        /// CSS класс текстбокса
        /// </summary>
        public string TextBoxCss
        {
            get { return txtLoad.CssClass; }
            set { txtLoad.CssClass = value; }
        }

        /// <summary>
        /// CSS класс кнопки
        /// </summary>
        public string ButtonCss
        {
            get { return btnLoad.CssClass; }
            set { btnLoad.CssClass = value; }
        }

        /// <summary>
        /// Массив байт изображения в формате .jpeg
        /// </summary>
        public byte[] ImageContent
        {
            get { return (byte[])Session[String.Format("UploadFile_ImageContent_{0}", this.ID)]; }
            set { Session[String.Format("UploadFile_ImageContent_{0}", this.ID)] = value; }
        }

        /// <summary>
        /// Обработка кнопки открытия формы выбора файла
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void ImageLoadClick(object sender, EventArgs e)
        {
            Thread thread = new Thread(new ThreadStart(openFileDialog));
            thread.SetApartmentState(ApartmentState.STA);
            thread.Start();
            thread.Join();
        }

        /// <summary>
        /// Получает и обрабатывает изображение
        /// </summary>
        private void openFileDialog()
        {
            FileInfo file = ImageHelper.OpenFile();
            if (file != null && file.Exists)
            {
                FileStream fileStream = null;
                try
                {
                    fileStream = file.OpenRead();
                    long nBytes = file.Length;
                    if (nBytes > 0)
                    {
                        byte[] imageByte = new byte[nBytes];
                        fileStream.Read(imageByte, 0, (int)nBytes);
                        byte[] jpegImageByte = ImageHelper.ConvertToJpeg(imageByte);
                        if (jpegImageByte != null && jpegImageByte.Length > 0)
                        {
                            txtLoad.Text = file.Name;
                            ImageContent = jpegImageByte;
                        }
                    }
                }
                finally
                {
                    fileStream.Close();
                }
            }
        }
    }
}